package com.victualler.core.base.controller;

import com.victualler.core.base.dao.BaseDao;
import com.victualler.core.base.repository.IBaseQueryRepository;
import com.victualler.core.common.dto.QueryDto;
import com.victualler.core.base.repository.BaseRepository;
import com.victualler.core.base.service.BaseService;
import com.victualler.core.common.dto.list.InitListPageDto;

import java.util.List;


/**
 * @Author: Guoshichang
 * @Date: Create in 19:07 2018/4/5
 * @Discription:  通用的接口对象
 */
public interface BaseRestController<E extends BaseDao,R extends BaseRepository<E,Long>,QR extends IBaseQueryRepository<E,Long>,S extends BaseService<E,R,QR>> {
    public E save(E dao);

    public List<E> findAll();

    public E find(Long id);

    public void delete(Long id);

    /**
     * 获取页面长度
     * @return
     */
    public Long getPageLength();


    /**
     * 根据页号取对应厂商信息
     * @param pageNo
     * @return
     */
    public List<E> getByPageNo(int pageNo);
    
    /**
     * 根据查询条件获取结果
     * @param queryDtoList
     * @return
     */
    public List<E>  findByCondition(List<QueryDto> queryDtoList);
    /**
     * 根据查询条件获取分页结果
     * @param queryDtoList
     * @param pageNo
     * @return
     */
    public List<E>  findByCondition(List<QueryDto> queryDtoList,int pageNo);

    /**
     * 根据查询条件获取分页信息
     * @param queryDtoList
     * @return
     */
    public Long getPageLength(List<QueryDto> queryDtoList);


}
